#pragma once
/* Copyright (C) 2009 Vlad Roubtsov. All rights reserved. */

#include <string>

#include <boost/utility.hpp>
using boost::noncopyable;

//----------------------------------------------------------------------------

// preprocessing control:

#define __VR_S(x) #x
#define __VR_AS_STRING(x) __VR_S(x)

#define __VR_LOCATION __FILE__ ":" __VR_AS_STRING (__LINE__)

// code generation control:

#if defined (__GNUC__)
#   define LIKELY(c)   __builtin_expect ((c), 1)
#   define UNLIKELY(c) __builtin_expect ((c), 0)
#else
#   define LIKELY(c)   (c)
#   define UNLIKELY(c) (c)
#endif
//............................................................................

namespace vr
{
namespace utility
{

extern std::string
as_class_name (const std::string & s);

} // end of 'utility'
} // end of namespace
//----------------------------------------------------------------------------
